package exo1;

import exception.creditAutoriseException;
import exception.debitAutoriseException;
import exception.debitSeuilException;

public abstract class Compte {
	protected static final String AL = "\n";
	private int numCompte;//numero du compte
	private String Nom;//nom du client detenteur du compte
	private String libellecompte;//libelle du compte
	private double solde;//solde du compte
	
	public Compte(int cP, String name, String libelleCp, int solde){
		this.numCompte = cP;
		this.Nom = name;
		this.libellecompte = libelleCp;
		this.solde = solde;
	}
	
	/**
	 * @return the numCompte
	 */
	public int getNumCompte() {
		return numCompte;
	}
	/**
	 * @param numCompte the numCompte to set
	 */
	public void setNumCompte(int numCompte) {
		this.numCompte = numCompte;
	}
	
	/**
	 * @return the nom
	 */
	public String getNom() {
		return Nom;
	}

	/**
	 * @param nom the nom to set
	 */
	public void setNom(String nom) {
		Nom = nom;
	}
	/**
	 * @return the libellecompte
	 */
	public String getLibellecompte() {
		return libellecompte;
	}
	/**
	 * @param libellecompte the libellecompte to set
	 */
	public void setLibellecompte(String libellecompte) {
		this.libellecompte = libellecompte;
	}
	/**
	 * @return the solde
	 */
	public double getSolde() {
		return solde;
	}
	/**
	 * @param solde the solde to set
	 */
	public void setSolde(double solde) {
		this.solde = solde;
	}
	
	public abstract boolean debiter(double montant) throws debitAutoriseException,
		debitSeuilException, IllegalArgumentException;
	
	public abstract boolean crediter(double montant) throws creditAutoriseException;
	
	
	public abstract boolean transferer(double montant)
	        throws creditAutoriseException, debitAutoriseException,
	        debitSeuilException, IllegalArgumentException;
	
	 @Override
     public String toString() {
		 StringBuilder afficheCompte = new StringBuilder();
		 afficheCompte.append("   Compte : " + libellecompte).append(AL)
		 				.append("   Numero Compte : " + numCompte).append(AL)
		 				.append("   Solde : " + solde).append(AL);
		 return afficheCompte.toString();
     }

	

	
	

}
